#ifndef NODO_H
#define NODO_H

#include <iostream>
#include "Lista.h"
using namespace std;

template<class T> class Lista;

/**
 * Template que representa un nodo de una lista doblemente enlazada
 */
template<class T>
class Nodo {
   public:
    Nodo(T v, Nodo<T> *sig = NULL, Nodo<T> *ant = NULL) :
       valor(v), siguiente(sig), anterior(ant) {}

   private:
    /**
     * Valor del nodo
     */
    T valor;

    /**
     * Nodo siguiente
     */
    Nodo<T> *siguiente;

    /**
     * Nodo anterior
     */
    Nodo<T> *anterior;

   friend class Lista<T>;
};

#endif
